Setup

Load Packages

We start by loading some useful packages. Using the library function, we can load these packages if they have previously been installed in your R. If they have not been previously installed, replace the library function with install.packages function and place the package name in quotation marks. That will install the package. Next, run the library function again and it will load the package. You only need to install a package once.

library(Rmisc) # Necessary for `summarySE` function. 
library(ggplot2) # Necessary for `ggplot` function.
library(kableExtra) # Necessary for `kbl` function.
library(dplyr) # Necessary for `mutate` function. 
library(conover.test) # Necessary for 'conover.test' function.
library(report) # Necessary for 'report' function
library(reshape2) # Necessary for melt.
library(png) # Necessary for png function.

Dataframe Setup

We will set the working directory using the setwd function. If you are looking to run this code in your computer, be sure to change the path to your data! Normally we can load dataframes using the read.csv function. The BeeHotel dataframe holds your data. Please take note that I have reorganized the data for easy input into R.

setwd("~/Desktop/R") # Set the working directory
Crops <- read.csv("Data/CropHarvest.csv")

Let’s check out the structure using the str function.

str(Crops)
## 'data.frame':    125 obs. of  20 variables:
##  $ Crop                : chr  "Bean" "Bean" "Bean" "Bean" ...
##  $ ID                  : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Unique_ID           : chr  "Bean 1" "Bean 2" "Bean 3" "Bean 4" ...
##  $ State               : chr  "Dead" "Harvested" "Dead" "Harvested" ...
##  $ Treatment           : chr  "Triple15" "Triple15" "-" "Triple15" ...
##  $ Stem_Length_cm      : num  NA 9.3 NA 7.5 8.9 14.7 5.9 12.7 NA 16.4 ...
##  $ Leaf_Vein_mm        : num  NA 46 NA 56 54 62 57 70.5 NA 65.5 ...
##  $ Leaf_Count          : int  NA 4 NA 23 21 35 27 30 NA 20 ...
##  $ Leaf_Width_mm       : num  NA 22.5 NA 30.5 33.5 32.5 29.5 30.5 NA 36.5 ...
##  $ Root_Length_mm      : num  NA 107 NA 131 142 104 149 124 NA 120 ...
##  $ Node_Count          : int  NA 2 NA 7 8 9 10 8 NA 5 ...
##  $ Fresh_Mass_g        : num  NA 6.3 NA 10.1 11.1 12.6 9.9 15.3 NA 11 ...
##  $ Fruited             : chr  NA "Yes" NA "No" ...
##  $ Flowered            : chr  NA "Yes" NA "No" ...
##  $ Root.Nodules.Present: chr  NA "Yes" NA "Yes" ...
##  $ Stem_Diameter_mm    : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Root_count          : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ Dry_Mass_g          : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Dry_Root_Mass_g     : num  NA NA NA NA NA NA NA NA NA NA ...
##  $ Notes               : chr  "" "" "" "" ...

We have some factor variables that are currently coded as characters (chr), so we’ll need to change the class of those. We also have some numerical and count data, with plenty NA values, because not every crop has all these measurements. We’ll subset by crop most likely.

We can convert the character class variables into factors using the as.factor function. We can convert multiple variables into factors by combining as.factor with the mutate function from the dplyr package as well as the across function on a concatenated list of our variables.

Crops <- Crops %>%
  dplyr::mutate(across(c("Crop", "ID", "Unique_ID", "State", "Treatment", 
                         "Fruited", "Flowered", "Root.Nodules.Present"), as.factor))

Great, now let’s subset by crop. What crops do we have?

summary(Crops$Crop)
##   Banana     Bean Eggplant 
##       25       50       50

Ok, “Banana”, “Bean”, and “Eggplant”. We can create our dataframes for each crop by first using the subset function to select rows where the crop is what we want, within the droplevels function to drop unused levels from factors in the dataframe, ensuring that we only have the levels present in each desired dataframe.

Banana <- droplevels(subset(Crops, Crops$Crop == "Banana"))
Cowpea <- droplevels(subset(Crops, Crops$Crop == "Bean"))
Eggplant <- droplevels(subset(Crops, Crops$Crop == "Eggplant"))

Ok, now let’s remove the unnecessary columns from each dataframe. We can do this using the colSums function along with is.na to calculate the sum of NA values for each column in the dataframe. The resulting logical vector is then compared with the total number of rows (nrow(myData)) to check if any column has values other than NA. Columns that have at least one non-NA value are retained in the modified dataframe, while columns with only NA values are dropped.

Banana <- Banana[, colSums(is.na(Banana)) != nrow(Banana)]
Cowpea <- Cowpea[, colSums(is.na(Cowpea)) != nrow(Cowpea)]
Eggplant <- Eggplant[, colSums(is.na(Eggplant)) != nrow(Eggplant)]

Some plants did not live through to harvest, so let’s subset those out too.

Banana_H <- droplevels(subset(Banana, Banana$State == "Harvested"))
Cowpea_H <- droplevels(subset(Cowpea, Cowpea$State == "Harvested"))
Eggplant_H <- droplevels(subset(Eggplant, Eggplant$State == "Harvested"))

Data Exploration

100 - (nrow(Banana) - nrow(Banana_H)) / nrow(Banana) * 100
## [1] 76
100 - (nrow(Cowpea) - nrow(Cowpea_H)) / nrow(Cowpea) * 100
## [1] 64
100 - (nrow(Eggplant) - nrow(Eggplant_H)) / nrow(Eggplant) * 100
## [1] 86

Let’s do some basic data exploration.

Banana

Variables

First, we’ll use the head function to get a view of what the data looks like and verify that we have included the variables of interest.

head(Banana_H)

Second, we’ll visualize the data distributions of our variables of interest. For this we will create a histogram and kernel density estimate, which is basically a smoothed out histogram using the geom_histogram and geom_density arguments of ggplot. We will also use geom_vline to create a vertical line where the mean of our species richness is.

Data Distributions

ggplot(Banana_H, aes(x=Stem_Length_cm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Stem_Length_cm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Stem Length (cm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Banana_H, aes(x=Leaf_Vein_mm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Leaf_Vein_mm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Leaf Vein Length (mm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Banana_H, aes(x=Leaf_Count)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Leaf_Count, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Leaf Count") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Banana_H, aes(x=Leaf_Width_mm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Leaf_Width_mm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Leaf Width (mm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Banana_H, aes(x=Root_Length_mm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Root_Length_mm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Root Length (mm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Banana_H, aes(x=Fresh_Mass_g)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Fresh_Mass_g, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Fresh Mass (g)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Banana_H, aes(x=Stem_Diameter_mm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Stem_Diameter_mm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Stem Diameter (mm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Banana_H, aes(x=Root_count)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Root_count, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Root Count") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

Cowpea

Variables

First, we’ll use the head function to get a view of what the data looks like and verify that we have included the variables of interest.

head(Cowpea_H)

Second, we’ll visualize the data distributions of our variables of interest. For this we will create a histogram and kernel density estimate, which is basically a smoothed out histogram using the geom_histogram and geom_density arguments of ggplot. We will also use geom_vline to create a vertical line where the mean of our species richness is.

Data Distributions

ggplot(Cowpea_H, aes(x=Stem_Length_cm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Stem_Length_cm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Stem Length (cm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Cowpea_H, aes(x=Leaf_Vein_mm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Leaf_Vein_mm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Leaf Vein Length (mm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Cowpea_H, aes(x=Leaf_Count)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Leaf_Count, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Leaf Count") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Cowpea_H, aes(x=Leaf_Width_mm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Leaf_Width_mm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Leaf Width (mm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Cowpea_H, aes(x=Root_Length_mm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Root_Length_mm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Root Length (mm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Cowpea_H, aes(x=Node_Count)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Node_Count, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Node Count") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Cowpea_H, aes(x=Fresh_Mass_g)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Fresh_Mass_g, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Fresh Mass (g)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

Eggplant

Variables

First, we’ll use the head function to get a view of what the data looks like and verify that we have included the variables of interest.

head(Eggplant_H)

Second, we’ll visualize the data distributions of our variables of interest. For this we will create a histogram and kernel density estimate, which is basically a smoothed out histogram using the geom_histogram and geom_density arguments of ggplot. We will also use geom_vline to create a vertical line where the mean of our species richness is.

Data Distributions

ggplot(Eggplant_H, aes(x=Stem_Length_cm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Stem_Length_cm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Stem Length (cm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Eggplant_H, aes(x=Leaf_Vein_mm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Leaf_Vein_mm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Leaf Vein Length (mm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Eggplant_H, aes(x=Leaf_Count)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Leaf_Count, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Leaf Count") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Eggplant_H, aes(x=Leaf_Width_mm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Leaf_Width_mm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Leaf Width (mm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Eggplant_H, aes(x=Root_Length_mm)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Root_Length_mm, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Root Length (mm)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Eggplant_H, aes(x=Node_Count)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Node_Count, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Node Count") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Eggplant_H, aes(x=Fresh_Mass_g)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Fresh_Mass_g, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Fresh Mass (g)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Eggplant_H, aes(x=Dry_Mass_g)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Dry_Mass_g, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Dry Mass (g)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

ggplot(Eggplant_H, aes(x=Dry_Root_Mass_g)) + 
  geom_histogram(aes(y=..density..), colour="black", fill="cornsilk") +
  geom_density(alpha=.2, fill="#FF6666") + # easier to see distribution
  geom_vline(aes(xintercept=mean(Dry_Root_Mass_g, na.rm=TRUE)),color="cadetblue4", 
             linetype="dashed", size=1) + # This adds a blue line where the mean is. 
  xlab("Dry Root Mass (g)") + 
  ylab("Density") + 
  theme_bw(base_size = 15)

Descriptive Statistics

Let’s get means and standard errors for our variables of interest by Treatment. We’ll set the number of digits we want to see to five, using the options function.

options(digits = 5)

To obtain our descriptive statistics, we’ll use the summarySE function and we’ll use the square brackets to specify the columns of interest. We’ll wrap that within a kbl function which will produce a neat, scientifically-styled table.

Banana

kbl(summarySE(Banana_H, measurevar="Stem_Length_cm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Stem_Length_cm se
Dilution 5 92.158 18.3695
Extract 4 129.238 5.0680
Optimar 5 56.600 2.3152
Water 5 106.800 3.7509
kbl(summarySE(Banana_H, measurevar="Leaf_Vein_mm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Leaf_Vein_mm se
Dilution 5 138.84 2.4780
Extract 4 146.30 3.6790
Optimar 5 117.33 2.1369
Water 5 140.99 2.7203
kbl(summarySE(Banana_H, measurevar= "Leaf_Count", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Leaf_Count se
Dilution 5 6.20 1.15758
Extract 4 6.25 1.31498
Optimar 5 7.20 0.37417
Water 5 8.60 0.92736
kbl(summarySE(Banana_H, measurevar="Leaf_Width_mm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Leaf_Width_mm se
Dilution 5 47.284 1.04788
Extract 4 45.773 0.59351
Optimar 5 41.802 0.56340
Water 5 47.958 3.52946
kbl(summarySE(Banana_H, measurevar="Root_Length_mm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Root_Length_mm se
Dilution 5 153.32 3.1206
Extract 4 144.55 18.7103
Optimar 5 123.06 9.5056
Water 5 129.14 10.0416
kbl(summarySE(Banana_H, measurevar= "Fresh_Mass_g", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Fresh_Mass_g se
Dilution 5 28.380 3.05195
Extract 4 24.775 2.80338
Optimar 5 25.900 1.75812
Water 5 26.780 0.78892
kbl(summarySE(Banana_H, measurevar= "Stem_Diameter_mm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Stem_Diameter_mm se
Dilution 5 11.332 0.44225
Extract 4 10.450 0.34135
Optimar 5 10.600 0.24495
Water 5 10.180 0.38523
kbl(summarySE(Banana_H, measurevar= "Root_count", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Root_count se
Dilution 5 12.2 0.96954
Extract 4 16.5 1.19024
Optimar 5 13.0 1.30384
Water 5 13.8 0.66332

Cowpea

kbl(summarySE(Cowpea_H, measurevar="Stem_Length_cm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Stem_Length_cm se
Dilution 7 10.6286 1.23842
Extract 7 12.2429 1.25335
Optimar 6 8.2000 0.46404
Triple15 6 8.8333 0.39805
Water 6 9.4667 0.54691
kbl(summarySE(Cowpea_H, measurevar="Leaf_Vein_mm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Leaf_Vein_mm se
Dilution 7 63.836 2.8737
Extract 6 65.083 6.6275
Optimar 5 50.200 3.0191
Triple15 5 56.400 3.1757
Water 5 50.160 4.7629
kbl(summarySE(Cowpea_H, measurevar= "Leaf_Count", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Leaf_Count se
Dilution 7 24.429 2.4384
Extract 7 15.000 3.8421
Optimar 6 12.333 3.5559
Triple15 6 15.167 4.8677
Water 6 16.000 3.7058
kbl(summarySE(Cowpea_H, measurevar="Leaf_Width_mm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Leaf_Width_mm se
Dilution 7 35.071 2.4114
Extract 6 36.417 2.8149
Optimar 5 27.100 2.5169
Triple15 5 33.100 3.1757
Water 5 29.810 1.8251
kbl(summarySE(Cowpea_H, measurevar="Root_Length_mm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Root_Length_mm se
Dilution 7 125.143 7.1161
Extract 7 108.000 7.9372
Optimar 6 91.333 9.7080
Triple15 6 122.833 9.6382
Water 6 109.700 5.6483
kbl(summarySE(Cowpea_H, measurevar= "Node_Count", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Node_Count se
Dilution 7 6.8571 0.79966
Extract 6 5.0000 0.68313
Optimar 5 4.6000 0.60000
Triple15 5 5.2000 1.06771
Water 5 4.0000 0.31623
kbl(summarySE(Cowpea_H, measurevar= "Fresh_Mass_g", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Fresh_Mass_g se
Dilution 7 10.7286 0.92291
Extract 7 8.3286 1.45499
Optimar 6 6.4333 1.15835
Triple15 6 8.6500 1.53661
Water 6 6.7500 1.11198

Eggplant

kbl(summarySE(Eggplant_H, measurevar="Stem_Length_cm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Stem_Length_cm se
Dilution 10 24.950 0.96451
Extract 10 23.120 0.91891
Optimar 9 20.167 1.04748
Triple15 7 23.286 1.11193
Water 7 21.429 1.10426
kbl(summarySE(Eggplant_H, measurevar="Leaf_Vein_mm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Leaf_Vein_mm se
Dilution 10 90.802 3.0045
Extract 10 82.225 2.3346
Optimar 9 76.087 3.0106
Triple15 7 82.736 2.3401
Water 7 73.411 3.6544
kbl(summarySE(Eggplant_H, measurevar= "Leaf_Count", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Leaf_Count se
Dilution 10 6.1000 0.37859
Extract 10 5.4000 0.42687
Optimar 9 5.4444 0.60349
Triple15 7 4.0000 0.00000
Water 7 6.5714 0.71903
kbl(summarySE(Eggplant_H, measurevar="Leaf_Width_mm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Leaf_Width_mm se
Dilution 10 64.656 2.0988
Extract 10 57.678 1.2866
Optimar 9 53.667 1.9113
Triple15 7 57.931 1.3547
Water 7 53.046 3.0376
kbl(summarySE(Eggplant_H, measurevar="Root_Length_mm", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Root_Length_mm se
Dilution 10 103.27 8.7975
Extract 10 139.95 4.0431
Optimar 9 115.67 6.5021
Triple15 7 113.00 10.9957
Water 7 107.86 13.3567
kbl(summarySE(Eggplant_H, measurevar= "Node_Count", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Node_Count se
Dilution 10 6.0000 0.25820
Extract 10 5.7000 0.36667
Optimar 9 5.1111 0.45474
Triple15 7 3.7143 0.28571
Water 7 5.7143 0.77810
kbl(summarySE(Eggplant_H, measurevar= "Fresh_Mass_g", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Fresh_Mass_g se
Dilution 10 8.8800 0.70329
Extract 10 6.8900 0.42543
Optimar 9 5.5333 0.44628
Triple15 7 5.9857 0.33125
Water 7 6.2000 0.86904
kbl(summarySE(Eggplant_H, measurevar= "Dry_Mass_g", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Dry_Mass_g se
Dilution 10 1140.29 96.509
Extract 10 972.67 51.361
Optimar 9 770.99 84.286
Triple15 7 980.83 102.852
Water 7 825.83 115.212
kbl(summarySE(Eggplant_H, measurevar= "Dry_Root_Mass_g", groupvars=c("Treatment"), 
              na.rm = TRUE)[,-c(4,6,8)], format = "html", 
    table.attr = "style='width:40%;'") %>% kable_classic()
Treatment N Dry_Root_Mass_g se
Dilution 10 281.33 41.542
Extract 10 281.23 33.070
Optimar 9 219.62 33.246
Triple15 7 360.39 73.616
Water 7 238.37 50.151

Figures

Banana

tgc <- summarySE(Banana_H, measurevar="Stem_Length_cm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Stem_Length_cm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Stem_Length_cm - se, ymax = Stem_Length_cm + se), width = 0.1) +
  ylab("Stem Length (cm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "lightyellow"))

tgc <- summarySE(Banana_H, measurevar="Leaf_Vein_mm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Leaf_Vein_mm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Leaf_Vein_mm - se, ymax = Leaf_Vein_mm + se), width = 0.1) +
  ylab("Leaf Vein Length (mm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "lightyellow"))

tgc <- summarySE(Banana_H, measurevar="Leaf_Count", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Leaf_Count, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Leaf_Count - se, ymax = Leaf_Count + se), width = 0.1) +
  ylab("Leaf Count") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "lightyellow"))

tgc <- summarySE(Banana_H, measurevar="Leaf_Width_mm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Leaf_Width_mm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Leaf_Width_mm - se, ymax = Leaf_Width_mm + se), width = 0.1) +
  ylab("Leaf Width (mm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "lightyellow"))

tgc <- summarySE(Banana_H, measurevar="Root_Length_mm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Root_Length_mm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Root_Length_mm - se, ymax = Root_Length_mm + se), width = 0.1) +
  ylab("Root Length (mm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "lightyellow"))

tgc <- summarySE(Banana_H, measurevar="Fresh_Mass_g", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Fresh_Mass_g, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Fresh_Mass_g - se, ymax = Fresh_Mass_g + se), width = 0.1) +
  ylab("Fresh Mass (g)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "lightyellow"))

tgc <- summarySE(Banana_H, measurevar="Stem_Diameter_mm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Stem_Diameter_mm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Stem_Diameter_mm - se, ymax = Stem_Diameter_mm + se), width = 0.1) +
  ylab("Stem Diameter (mm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "lightyellow"))

tgc <- summarySE(Banana_H, measurevar="Root_count", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Root_count, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Root_count - se, ymax = Root_count + se), width = 0.1) +
  ylab("Root Count") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "lightyellow"))

Cowpea

tgc <- summarySE(Cowpea_H, measurevar="Stem_Length_cm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Stem_Length_cm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Stem_Length_cm - se, ymax = Stem_Length_cm + se), width = 0.1) +
  ylab("Stem Length (cm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#ecdacd"))

tgc <- summarySE(Cowpea_H, measurevar="Leaf_Vein_mm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Leaf_Vein_mm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Leaf_Vein_mm - se, ymax = Leaf_Vein_mm + se), width = 0.1) +
  ylab("Leaf Vein Length (mm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#ecdacd"))

tgc <- summarySE(Cowpea_H, measurevar="Leaf_Count", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Leaf_Count, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Leaf_Count - se, ymax = Leaf_Count + se), width = 0.1) +
  ylab("Leaf Count") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#ecdacd"))

tgc <- summarySE(Cowpea_H, measurevar="Leaf_Width_mm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Leaf_Width_mm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Leaf_Width_mm - se, ymax = Leaf_Width_mm + se), width = 0.1) +
  ylab("Leaf Width (mm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#ecdacd"))

tgc <- summarySE(Cowpea_H, measurevar="Root_Length_mm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Root_Length_mm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Root_Length_mm - se, ymax = Root_Length_mm + se), width = 0.1) +
  ylab("Root Length (mm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#ecdacd"))

tgc <- summarySE(Cowpea_H, measurevar="Node_Count", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Node_Count, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Node_Count - se, ymax = Node_Count + se), width = 0.1) +
  ylab("Node Count") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#ecdacd"))

tgc <- summarySE(Cowpea_H, measurevar="Fresh_Mass_g", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Fresh_Mass_g, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Fresh_Mass_g - se, ymax = Fresh_Mass_g + se), width = 0.1) +
  ylab("Fresh Mass (g)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#ecdacd"))

Eggplant

tgc <- summarySE(Eggplant_H, measurevar="Stem_Length_cm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Stem_Length_cm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Stem_Length_cm - se, ymax = Stem_Length_cm + se), width = 0.1) +
  ylab("Stem Length (cm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#f1e2fb"))

tgc <- summarySE(Eggplant_H, measurevar="Leaf_Vein_mm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Leaf_Vein_mm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Leaf_Vein_mm - se, ymax = Leaf_Vein_mm + se), width = 0.1) +
  ylab("Leaf Vein Length (mm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#f1e2fb"))

tgc <- summarySE(Eggplant_H, measurevar="Leaf_Count", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Leaf_Count, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Leaf_Count - se, ymax = Leaf_Count + se), width = 0.1) +
  ylab("Leaf Count") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#f1e2fb"))

tgc <- summarySE(Eggplant_H, measurevar="Leaf_Width_mm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Leaf_Width_mm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Leaf_Width_mm - se, ymax = Leaf_Width_mm + se), width = 0.1) +
  ylab("Leaf Width (mm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#f1e2fb"))

tgc <- summarySE(Eggplant_H, measurevar="Root_Length_mm", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Root_Length_mm, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Root_Length_mm - se, ymax = Root_Length_mm + se), width = 0.1) +
  ylab("Root Length (mm)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#f1e2fb"))

tgc <- summarySE(Eggplant_H, measurevar="Node_Count", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Node_Count, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Node_Count - se, ymax = Node_Count + se), width = 0.1) +
  ylab("Node Count") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#f1e2fb"))

tgc <- summarySE(Eggplant_H, measurevar="Fresh_Mass_g", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Fresh_Mass_g, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Fresh_Mass_g - se, ymax = Fresh_Mass_g + se), width = 0.1) +
  ylab("Fresh Mass (g)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#f1e2fb"))

tgc <- summarySE(Eggplant_H, measurevar="Dry_Mass_g", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Dry_Mass_g, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Dry_Mass_g - se, ymax = Dry_Mass_g + se), width = 0.1) +
  ylab("Dry Mass (g)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#f1e2fb"))

tgc <- summarySE(Eggplant_H, measurevar="Dry_Root_Mass_g", groupvars=c("Treatment"), na.rm = TRUE)

ggplot(tgc, aes(x = Treatment, y = Dry_Root_Mass_g, fill = Treatment)) +
  geom_bar(stat = "identity", color = "black", alpha = 0.5) +
  geom_errorbar(aes(ymin = Dry_Root_Mass_g - se, ymax = Dry_Root_Mass_g + se), width = 0.1) +
  ylab("Dry Root Mass (g)") +
  scale_fill_manual(values = c("#ADD8C6", "#E6E6FA", "#FFB6C1", "#eaa372", "#ADD8E6")) +
  theme_classic(base_size=15)  +
  theme(panel.background = element_rect(fill = "#f1e2fb"))

Statistical Analysis

Because of the sheer number of tests we need to do, it is not reasonable to evaluate each model’s assumptions and select a transformation or GLM suited for each one. Instead, given that most data do not follow a normal data distribution, I suggest we continue using non-parametric statistics only. For this we have the Kruskal-Wallis test, available through the kruskal.test function, and the conover post-hoc test, available through the conover.test function.

Banana

Stem Length

options(digits = 7)
kruskal.test(data = Banana_H, Stem_Length_cm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Stem_Length_cm by Treatment
## Kruskal-Wallis chi-squared = 9.5436, df = 3, p-value = 0.02287
conover.test(Banana_H$Stem_Length_cm, Banana_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 9.5436, df = 3, p-value = 0.02
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar
## ---------+---------------------------------
##  Extract |  -2.064870
##          |     0.0850
##          |
##  Optimar |   2.096530   4.041498
##          |     0.1068    0.0064*
##          |
##    Water |  -0.486694   1.606010  -2.583225
##          |     0.6335     0.1549     0.0623
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a statistically significant difference in stem length in banana plants (KW X2 = 9.544, p = 0.023). According to the Conover Post-Hoc Test, this difference is between Optimar and Extract (t = 4.041, p = 0.006). There is also a marginally significant difference between Extract and Dilution (t = -2.065, p = 0.085) and between Water and Optimar (t = -2.583, p = 0.062).


Leaf Vein Length

kruskal.test(data = Banana_H, Leaf_Vein_mm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Leaf_Vein_mm by Treatment
## Kruskal-Wallis chi-squared = 12.482, df = 3, p-value = 0.005903
conover.test(Banana_H$Leaf_Vein_mm, Banana_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 12.4816, df = 3, p-value = 0.01
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar
## ---------+---------------------------------
##  Extract |  -2.249251
##          |     0.0599
##          |
##  Optimar |   3.520632   5.568535
##          |    0.0062*    0.0003*
##          |
##    Water |  -0.555889   1.725154  -4.076521
##          |     0.5865     0.1260    0.0030*
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a statistically significant difference in leaf vein length in banana plants (KW X2 = 12.482, p = 0.006). According to the Conover Post-Hoc Test, this difference is between Optimar and Extract (t = 5.569, p = 0.0003) as well as between Optimar and Dilution (t = 3.521, p = 0.006) and Optimar and Water (t = -4.077, p = 0.003). There is also a marginally significant difference between Extract and Dilution (t = -2.249, p = 0.0599).


Leaf Count

kruskal.test(data = Banana_H, Leaf_Count ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Leaf_Count by Treatment
## Kruskal-Wallis chi-squared = 2.0967, df = 3, p-value = 0.5526

INTERPRETATION: We do NOT have a statistically significant difference in leaf vein length in banana plants (KW X2 = 2.096, p = 0.553). There is no need for a Conover Post-Hoc Test.


Leaf Width

kruskal.test(data = Banana_H, Leaf_Width_mm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Leaf_Width_mm by Treatment
## Kruskal-Wallis chi-squared = 11.153, df = 3, p-value = 0.01093
conover.test(Banana_H$Leaf_Width_mm, Banana_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 11.1527, df = 3, p-value = 0.01
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar
## ---------+---------------------------------
##  Extract |   0.922207
##          |     0.4452
##          |
##  Optimar |   4.620189   3.433749
##          |    0.0020*    0.0074*
##          |
##    Water |   1.082206   0.098107  -3.537983
##          |     0.4444     0.9231    0.0089*
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a statistically significant difference in leaf width (mm) in banana plants (KW X2 = 11.153, p = 0.011). According to the Conover Post-Hoc Test, this difference is between Optimar and Extract (t = 3.434, p = 0.007) as well as between Optimar and Dilution (t = 4.620, p = 0.002) and Optimar and Water (t = -3.538, p = 0.009).


Root Length

kruskal.test(data = Banana_H, Root_Length_mm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Root_Length_mm by Treatment
## Kruskal-Wallis chi-squared = 3.8589, df = 3, p-value = 0.2771
conover.test(Banana_H$Leaf_Width_mm, Banana_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 11.1527, df = 3, p-value = 0.01
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar
## ---------+---------------------------------
##  Extract |   0.922207
##          |     0.4452
##          |
##  Optimar |   4.620189   3.433749
##          |    0.0020*    0.0074*
##          |
##    Water |   1.082206   0.098107  -3.537983
##          |     0.4444     0.9231    0.0089*
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We do NOT have a statistically significant difference in root length in banana plants (KW X2 = 3.8589, p = 0.277). There is no need for a Conover Post-Hoc Test.


Fresh Mass

kruskal.test(data = Banana_H, Fresh_Mass_g ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Fresh_Mass_g by Treatment
## Kruskal-Wallis chi-squared = 1.7751, df = 3, p-value = 0.6204
conover.test(Banana_H$Leaf_Width_mm, Banana_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 11.1527, df = 3, p-value = 0.01
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar
## ---------+---------------------------------
##  Extract |   0.922207
##          |     0.4452
##          |
##  Optimar |   4.620189   3.433749
##          |    0.0020*    0.0074*
##          |
##    Water |   1.082206   0.098107  -3.537983
##          |     0.4444     0.9231    0.0089*
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We do NOT have a statistically significant difference in fresh mass (g) in banana plants (KW X2 = 1.775, p = 0.620). There is no need for a Conover Post-Hoc Test.


Stem Diameter

kruskal.test(data = Banana_H, Stem_Diameter_mm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Stem_Diameter_mm by Treatment
## Kruskal-Wallis chi-squared = 3.4792, df = 3, p-value = 0.3235
conover.test(Banana_H$Leaf_Width_mm, Banana_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 11.1527, df = 3, p-value = 0.01
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar
## ---------+---------------------------------
##  Extract |   0.922207
##          |     0.4452
##          |
##  Optimar |   4.620189   3.433749
##          |    0.0020*    0.0074*
##          |
##    Water |   1.082206   0.098107  -3.537983
##          |     0.4444     0.9231    0.0089*
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We do NOT have a statistically significant difference in stem diameter (mm) in banana plants (KW X2 = 3.4792, p = 0.3235). There is no need for a Conover Post-Hoc Test.


Root Count

kruskal.test(data = Banana_H, Root_count ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Root_count by Treatment
## Kruskal-Wallis chi-squared = 7.7933, df = 3, p-value = 0.05048
conover.test(Banana_H$Root_count, Banana_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 7.7933, df = 3, p-value = 0.05
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar
## ---------+---------------------------------
##  Extract |  -3.318961
##          |    0.0280*
##          |
##  Optimar |  -1.037923   2.340398
##          |     0.3789     0.1005
##          |
##    Water |  -1.141715   2.242541  -0.103792
##          |     0.4072     0.0809     0.9187
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a MARGINALLY statistically significant difference in leaf width (mm) in banana plants (KW X2 = 7.7933, p = 0.050). According to the Conover Post-Hoc Test, there is a statistically significant difference between Extract and Dilution (t = -3.319, p = 0.028). There is also a marginally significant difference between Water and Extract (t = 2.243, p = 0.081).


Cowpea

Stem Length

options(digits = 7)
kruskal.test(data = Cowpea_H, Stem_Length_cm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Stem_Length_cm by Treatment
## Kruskal-Wallis chi-squared = 7.0764, df = 4, p-value = 0.1319

INTERPRETATION: We do NOT have a statistically significant difference in stem length in banana plants (KW X2 = 7.076, p = 0.132). There is no need for a Conover Post-Hoc Test.


Leaf Vein Length (mm)

options(digits = 7)
kruskal.test(data = Cowpea_H, Leaf_Vein_mm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Leaf_Vein_mm by Treatment
## Kruskal-Wallis chi-squared = 8.8307, df = 4, p-value = 0.06547
conover.test(Cowpea_H$Leaf_Vein_mm, Cowpea_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 8.8307, df = 4, p-value = 0.07
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |   0.322380
##          |     0.7501
##          |
##  Optimar |   2.793536   2.405117
##          |     0.1032     0.1230
##          |
## Triple15 |   1.390084   1.047998  -1.299343
##          |     0.3556     0.4365     0.3445
##          |
##    Water |   2.185373   1.817032  -0.563048   0.736294
##          |     0.1310     0.2057     0.6432     0.5862
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We do have a MARGINALLY statistically significant difference in stem length in Cowpea plants (KW X2 = 8.831, p = 0.065), but according to the Conover Post-Hoc Test, there are not pairwise differences with a p-value above 0.1.


Leaf Count

options(digits = 7)
kruskal.test(data = Cowpea_H, Leaf_Count ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Leaf_Count by Treatment
## Kruskal-Wallis chi-squared = 5.1625, df = 4, p-value = 0.271

INTERPRETATION: We do NOT have a statistically significant difference in leaf count in Cowpea plants (KW X2 = 5.1625, p = 0.271). There is no need for a Conover Post-Hoc Test.


Leaf Width

options(digits = 7)
kruskal.test(data = Cowpea_H, Leaf_Width_mm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Leaf_Width_mm by Treatment
## Kruskal-Wallis chi-squared = 6.3737, df = 4, p-value = 0.1729

INTERPRETATION: We do NOT have a statistically significant difference in leaf width in Cowpea plants (KW X2 = 6.374, p = 0.173). There is no need for a Conover Post-Hoc Test.


Root Length (mm)

options(digits = 7)
kruskal.test(data = Cowpea_H, Root_Length_mm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Root_Length_mm by Treatment
## Kruskal-Wallis chi-squared = 8.5127, df = 4, p-value = 0.0745
conover.test(Cowpea_H$Root_Length_mm, Cowpea_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 8.5127, df = 4, p-value = 0.07
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |   1.593149
##          |     0.4092
##          |
##  Optimar |   2.913735   1.383086
##          |     0.0709     0.2966
##          |
## Triple15 |   0.357651  -1.172997  -2.463103
##          |     0.8038     0.3586     0.1022
##          |
##    Water |   1.425604  -0.105044  -1.433998   1.029105
##          |     0.3309     0.9171     0.4076     0.3907
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a MARGINALLY statistically significant difference in root length in Cowpea plants (KW X2 = 8.513, p = 0.0745). According to the Conover Post-Hoc Test, there is a single, marginally significant difference between Optimar and Dilution (t = 2.914, p = 0.071).


Node Count

options(digits = 7)
kruskal.test(data = Cowpea_H, Node_Count ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Node_Count by Treatment
## Kruskal-Wallis chi-squared = 7.7206, df = 4, p-value = 0.1024
conover.test(Cowpea_H$Node_Count, Cowpea_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 7.7206, df = 4, p-value = 0.1
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |   1.412453
##          |     0.3424
##          |
##  Optimar |   2.019656   0.655248
##          |     0.2761     0.6485
##          |
## Triple15 |   1.419039   0.074460  -0.556063
##          |     0.4232     0.9413     0.6484
##          |
##    Water |   2.897480   1.504094   0.812707   1.368770
##          |     0.0812     0.4872     0.6067     0.3072
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We do NOT have a statistically significant difference in node count in Cowpea plants (KW X2 = 7.721, p = 0.102). According to the Conover Post-Hoc Test, there is a single, MARGINALLY significant difference between Water and Dilution (t = 2.897, p = 0.081).


Fresh Mass

options(digits = 7)
kruskal.test(data = Cowpea_H, Fresh_Mass_g ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Fresh_Mass_g by Treatment
## Kruskal-Wallis chi-squared = 8.3732, df = 4, p-value = 0.07882
conover.test(Cowpea_H$Fresh_Mass_g, Cowpea_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 8.3732, df = 4, p-value = 0.08
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |   1.120694
##          |     0.3890
##          |
##  Optimar |   2.619541   1.542812
##          |     0.1427     0.2690
##          |
## Triple15 |   0.822501  -0.254227  -1.731671
##          |     0.5225     0.8903     0.3158
##          |
##    Water |   2.479965   1.403236  -0.134498   1.597172
##          |     0.0984     0.2866     0.8940     0.3047
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a MARGINALLY statistically significant difference in fresh mass in Cowpea plants (KW X2 = 8.3732, p = 0.079). According to the Conover Post-Hoc Test, there is a single, MARGINALLY significant difference between Water and Dilution (t = 2.479, p = 0.098).


Eggplant

Stem Length

options(digits = 7)
kruskal.test(data = Eggplant_H, Stem_Length_cm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Stem_Length_cm by Treatment
## Kruskal-Wallis chi-squared = 9.7729, df = 4, p-value = 0.04443
conover.test(Eggplant_H$Stem_Length_cm, Eggplant_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 9.7729, df = 4, p-value = 0.04
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |   1.132774
##          |     0.3777
##          |
##  Optimar |   3.085706   1.983144
##          |    0.0378*     0.1820
##          |
## Triple15 |   0.854763  -0.173212  -1.977471
##          |     0.4975     0.8634     0.1382
##          |
##    Water |   2.235439   1.207463  -0.627335   1.272920
##          |     0.1567     0.3912     0.5935     0.4216
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a statistically significant difference in stem length in eggplant plants (KW X2 = 9.773, p = 0.044). According to the Conover Post-Hoc Test, there is a statistically significant difference between Optimar and Dilution (t = 3.086, p = 0.038).


Leaf Vein Length

options(digits = 7)
kruskal.test(data = Eggplant_H, Leaf_Vein_mm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Leaf_Vein_mm by Treatment
## Kruskal-Wallis chi-squared = 14.561, df = 4, p-value = 0.005704
conover.test(Eggplant_H$Leaf_Vein_mm, Eggplant_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 14.5611, df = 4, p-value = 0.01
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |   1.991113
##          |     0.1342
##          |
##  Optimar |   3.725281   1.787273
##          |    0.0032*     0.1170
##          |
## Triple15 |   1.618064  -0.188842  -1.814174
##          |     0.1424     0.8512     0.1293
##          |
##    Water |   3.778200   1.971294   0.298180   1.991547
##          |    0.0054*     0.1120     0.8524     0.1788
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a statistically significant difference in leaf vein length (mm) in eggplant plants (KW X2 = 14.561, p = 0.006). According to the Conover Post-Hoc Test, there is a statistically significant difference between Optimar and Dilution (t = 3.725, p = 0.003) and between Water and Dilution (t = 3.778, p = 0.005).


Leaf Count

options(digits = 7)
kruskal.test(data = Eggplant_H, Leaf_Count ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Leaf_Count by Treatment
## Kruskal-Wallis chi-squared = 13.501, df = 4, p-value = 0.009069
conover.test(Eggplant_H$Leaf_Count, Eggplant_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 13.5013, df = 4, p-value = 0.01
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |   1.342976
##          |     0.2341
##          |
##  Optimar |   1.377472   0.070314
##          |     0.2520     0.9443
##          |
## Triple15 |   3.723902   2.505170   2.385649
##          |    0.0063*     0.0555     0.0553
##          |
##    Water |  -0.283265  -1.501997  -1.532881  -3.694426
##          |     0.8650     0.2356     0.2672    0.0035*
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a statistically significant difference in leaf count in eggplant plants (KW X2 = 13.501, p = 0.009). According to the Conover Post-Hoc Test, there is a statistically significant difference between Triple15 and Dilution (t = 3.724, p = 0.006) and between Water and Triple15 (t = 2.386, p = 0.004). There are also MARGINALLY significant differences between Triple15 and Optimar (t = 2.386, p = 0.055) and Triple15 and Extract (t = 2.505, p = 0.056).


Leaf Width

options(digits = 7)
kruskal.test(data = Eggplant_H, Leaf_Width_mm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Leaf_Width_mm by Treatment
## Kruskal-Wallis chi-squared = 15.432, df = 4, p-value = 0.003884
conover.test(Eggplant_H$Leaf_Width_mm, Eggplant_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 15.4323, df = 4, p-value = 0
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |   2.587945
##          |    0.0453*
##          |
##  Optimar |   4.224693   1.705771
##          |    0.0014*     0.1924
##          |
## Triple15 |   2.242210  -0.106311  -1.659161
##          |     0.0772     0.9159     0.1755
##          |
##    Water |   3.705722   1.357200  -0.228022   1.349291
##          |    0.0033*     0.2610     0.9121     0.2315
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a statistically significant difference in leaf width (mm) in eggplant plants (KW X2 = 15.432, p = 0.004). According to the Conover Post-Hoc Test, there is a statistically significant difference between Water and Dilution (t = 3.706, p = 0.003) and between Optimar and Dilution (t = 4.225, p = 0.001) and between Extract and Dilution (t = 2.588, p = 0.045).


Root Length

options(digits = 7)
kruskal.test(data = Eggplant_H, Root_Length_mm ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Root_Length_mm by Treatment
## Kruskal-Wallis chi-squared = 11.469, df = 4, p-value = 0.02177
conover.test(Eggplant_H$Root_Length_mm, Eggplant_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 11.4694, df = 4, p-value = 0.02
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |  -3.509629
##          |    0.0117*
##          |
##  Optimar |  -0.756965   2.659056
##          |     0.7562    0.0570*
##          |
## Triple15 |  -0.904826   2.280110  -0.194664
##          |     0.7425     0.0707     0.9408
##          |
##    Water |  -0.621262   2.563674   0.082627   0.261432
##          |     0.7688    0.0481*     0.9346     0.9940
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a statistically significant difference in root length (mm) in eggplant plants (KW X2 = 11.469, p = 0.022). According to the Conover Post-Hoc Test, there is a statistically significant difference between Dilution and Extract (t = 3.509, p = 0.012) and between Extract and Water (t = 2.564, p = 0.048). There is also a marginally significant difference between Triple15 and Extract (t = 2.280, p = 0.071) and between Optimar and Extract (t = 2.659, p = 0.057).


Node Count

options(digits = 7)
kruskal.test(data = Eggplant_H, Node_Count ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Node_Count by Treatment
## Kruskal-Wallis chi-squared = 14.408, df = 4, p-value = 0.0061
conover.test(Eggplant_H$Node_Count, Eggplant_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 14.408, df = 4, p-value = 0.01
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |   0.729495
##          |     0.5877
##          |
##  Optimar |   1.838907   1.128868
##          |     0.1475     0.3800
##          |
## Triple15 |   4.220986   3.558979   2.451033
##          |    0.0015*    0.0051*    0.0474*
##          |
##    Water |   1.300369   0.638363  -0.404979  -2.692675
##          |     0.3355     0.5856     0.6878    0.0350*
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a statistically significant difference in node count in eggplant plants (KW X2 = 14.408, p = 0.006). According to the Conover Post-Hoc Test, there is a statistically significant difference between Triple15 and Dilution (t = 4.221, p = 0.002), Triple15 and Extract (t = 3.559, p = 0.005), Triple15 and Optimar (t = 2.451, p = 0.047), and Triple15 and Water (t = -2.693, p = 0.035).


Fresh Mass

options(digits = 7)
kruskal.test(data = Eggplant_H, Fresh_Mass_g ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Fresh_Mass_g by Treatment
## Kruskal-Wallis chi-squared = 12.782, df = 4, p-value = 0.01239
conover.test(Eggplant_H$Fresh_Mass_g, Eggplant_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 12.7824, df = 4, p-value = 0.01
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |   1.809124
##          |     0.1567
##          |
##  Optimar |   3.730587   1.969715
##          |    0.0062*     0.1405
##          |
## Triple15 |   2.888221   1.246467  -0.576950
##          |    0.0318*     0.3670     0.6304
##          |
##    Water |   2.532464   0.890710  -0.924838  -0.327991
##          |     0.0519     0.4734     0.5156     0.7447
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We have a statistically significant difference in fresh mass (g) in eggplant plants (KW X2 = 12.782, p = 0.012). According to the Conover Post-Hoc Test, there is a statistically significant difference between Triple15 and Dilution (t = 2.888, p = 0.006) and Optimar and Dilution (t = 3.731, p = 0.006). We also have a MARGINALLY significant difference between Water and Dilution (t = 2.532, p = 0.052).


Dry Mass

options(digits = 7)
kruskal.test(data = Eggplant_H, Dry_Mass_g ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Dry_Mass_g by Treatment
## Kruskal-Wallis chi-squared = 7.6244, df = 4, p-value = 0.1063
conover.test(Eggplant_H$Dry_Mass_g, Eggplant_H$Treatment, altp=TRUE, method = "bh") 
##   Kruskal-Wallis rank sum test
## 
## data: x and group
## Kruskal-Wallis chi-squared = 7.6244, df = 4, p-value = 0.11
## 
## 
##                            Comparison of x by group                            
##                              (Benjamini-Hochberg)                              
## Col Mean-|
## Row Mean |   Dilution    Extract    Optimar   Triple15
## ---------+--------------------------------------------
##  Extract |   1.123396
##          |     0.5366
##          |
##  Optimar |   2.725486   1.632051
##          |     0.0965     0.3698
##          |
## Triple15 |   1.063157   0.043691  -1.445264
##          |     0.4907     0.9654     0.3915
##          |
##    Water |   1.936985   0.917519  -0.590764   0.805629
##          |     0.3010     0.5209     0.6202     0.5318
## 
## alpha = 0.05
## Reject Ho if p <= alpha

INTERPRETATION: We do NOT have a statistically significant difference in dry mass (g) in eggplant plants (KW X2 = 7.624, p = 0.106). According to the Conover Post-Hoc Test, there is a MARGINALLY statistically significant difference between Dilution and Optimar (t = 2.725, p = 0.097).


Dry Root Mass

options(digits = 7)
kruskal.test(data = Eggplant_H, Dry_Root_Mass_g ~ Treatment)
## 
##  Kruskal-Wallis rank sum test
## 
## data:  Dry_Root_Mass_g by Treatment
## Kruskal-Wallis chi-squared = 3.2641, df = 4, p-value = 0.5146

INTERPRETATION: We do NOT have a statistically significant difference in dry mass (g) in eggplant plants (KW X2 = 3.264, p = 0.515). There is no need for a Conover Post-Hoc Test.


Final Figures

Variable Scaling and Prep.

Lets try out the Z transformation (X-Mean/standard deviation). Z-transformation (also known as standardization) is a statistical technique used to transform a dataset into a standard normal distribution with a mean of 0 and a standard deviation of 1. This transformation is often applied to data to make it more amenable to certain statistical analyses or to compare data on different scales. We can easily perform a Z-transformation (standardization) on a dataset using the scale function. We will apply the scale function to all the biometric variables by using a for loop that iterates scale over each column specified in a vector named columns_to_scale, which holds the name of all the biometric variables.

Next we use the melt function to create a single column for each of our biometric variables.

Next we drop the Treatment categories that corresponded to dead seedlings.

Manuscript Figure

## quartz_off_screen 
##                 2

Package Report

We will use the report function to obtain all the bibliographical information we need on the R packages used in this analysis.

## Analyses were conducted using the R Statistical language (version 4.2.2; R Core
## Team, 2022) on macOS Ventura 13.4.1, using the packages conover.test (version
## 1.1.5; Dinno A, 2017), Rmisc (version 1.5.1; Hope RM, 2022), report (version
## 0.5.6; Makowski D et al., 2023), lattice (version 0.20.45; Sarkar D, 2008), png
## (version 0.1.8; Urbanek S, 2022), reshape2 (version 1.4.4; Wickham H, 2007),
## plyr (version 1.8.8; Wickham H, 2011), ggplot2 (version 3.4.1; Wickham H,
## 2016), dplyr (version 1.1.0; Wickham H et al., 2023) and kableExtra (version
## 1.3.4; Zhu H, 2021).
## 
## References
## ----------
##   - Dinno A (2017). _conover.test: Conover-Iman Test of Multiple Comparisons
## Using Rank Sums_. R package version 1.1.5,
## <https://CRAN.R-project.org/package=conover.test>.
##   - Hope RM (2022). _Rmisc: Ryan Miscellaneous_. R package version 1.5.1,
## <https://CRAN.R-project.org/package=Rmisc>.
##   - Makowski D, Lüdecke D, Patil I, Thériault R (2023). "Automated Results
## Reporting as a Practical Tool to Improve Reproducibility and Methodological
## Best Practices Adoption." _CRAN_. <https://easystats.github.io/report/>.
##   - R Core Team (2022). _R: A Language and Environment for Statistical
## Computing_. R Foundation for Statistical Computing, Vienna, Austria.
## <https://www.R-project.org/>.
##   - Sarkar D (2008). _Lattice: Multivariate Data Visualization with R_. Springer,
## New York. ISBN 978-0-387-75968-5, <http://lmdvr.r-forge.r-project.org>.
##   - Urbanek S (2022). _png: Read and write PNG images_. R package version 0.1-8,
## <https://CRAN.R-project.org/package=png>.
##   - Wickham H (2007). "Reshaping Data with the reshape Package." _Journal of
## Statistical Software_, *21*(12), 1-20. <http://www.jstatsoft.org/v21/i12/>.
##   - Wickham H (2011). "The Split-Apply-Combine Strategy for Data Analysis."
## _Journal of Statistical Software_, *40*(1), 1-29.
## <https://www.jstatsoft.org/v40/i01/>.
##   - Wickham H (2016). _ggplot2: Elegant Graphics for Data Analysis_.
## Springer-Verlag New York. ISBN 978-3-319-24277-4,
## <https://ggplot2.tidyverse.org>.
##   - Wickham H, François R, Henry L, Müller K, Vaughan D (2023). _dplyr: A Grammar
## of Data Manipulation_. R package version 1.1.0,
## <https://CRAN.R-project.org/package=dplyr>.
##   - Zhu H (2021). _kableExtra: Construct Complex Table with 'kable' and Pipe
## Syntax_. R package version 1.3.4,
## <https://CRAN.R-project.org/package=kableExtra>.